import math
def continuous_fraction(x, limit = 8):
x_ = x
a_ = math.floor(x)
res = [a_]
for _ in range(limit):
try:
a_ = res[-1]
x = 1 / (x_ - a_)
x_ = x
a = math.floor(x)
res.append(a)
except:
break
return res
# Primer
continuous_fraction(math.pi)
def cont_to_rational(cont_frac):
n = len(cont_frac)
p_ = 0
q_ = 1
for i in range(n-1, -1, -1):
a = cont_frac[i]
q = a * q_ + p_
p = q_
p_ = p
q_ = q
return (q, p)
# Primer
cont = continuous_fraction(22/7, 1)
frac = cont_to_rational(cont)
print(frac)
(p, q) = frac
print(p / q)